/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Logica.Comandos;

import AccesoDatos.Fabricas.DAO;
import Excepciones.NoConexionException;
import Logica.Fabricas.Comando;
import ObjetoDominio.Servidor;
import ObjetoDominio.Usuario;
import Session.Session;

/**
 *Comando que valida las credenciales de un usuario
 * @author guzmle
 */
public class ComandoValidarUsuario implements Comando<Boolean> {

    private Usuario _usuario;
    private Servidor _servidor;
    
    public ComandoValidarUsuario(Servidor servidor,Usuario usuario){
        _usuario = usuario;
        _servidor = servidor;
    }
    
    /**
     * Metodo que ejecuta la accion de validar un usuario
     */
    @Override
    public Boolean Ejecutar() throws NoConexionException {
        while(true)
        try {
            return DAO.ObtenerDAO(DAO.Opciones.socket)
                    .ObtenerDAOUsuario(_servidor).ValidarUsuario(_usuario);
        } catch (NoConexionException e) {
            if(!Session.VerificarServidores()){
                throw new NoConexionException();
            }
            _servidor = Session.getServidorConectado();
        }
    }

    @Override
    public void Detener() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void Pausar() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void Reanudar() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public boolean esVivo() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
    
}
